/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package managers;

import conexionBD.ConexionServidor;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.jsf.FacesContextUtils;

/**
 *
 * @author juan
 */
@ManagedBean
@SessionScoped
public class managerClaveusuario implements Serializable {

    WebApplicationContext permisos = FacesContextUtils.getRequiredWebApplicationContext(FacesContext.getCurrentInstance());
    JdbcTemplate jdbcTemplate = (JdbcTemplate) permisos.getBean("jdbcTemplate");
    String clavevieja;
    String clavenueva;
    String claveigual;
    FacesContext contexto;
    Integer idusuario;
    String nombreusuario;

    public String getNombreusuario() {
        return nombreusuario;
    }

    public void setNombreusuario(String nombreusuario) {
        this.nombreusuario = nombreusuario;
    }

    public String getClaveigual() {
        return claveigual;
    }

    public void setClaveigual(String claveigual) {
        this.claveigual = claveigual;
    }

    public String getClavenueva() {
        return clavenueva;
    }

    public void setClavenueva(String clavenueva) {
        this.clavenueva = clavenueva;
    }

    public String getClavevieja() {
        return clavevieja;
    }

    public void setClavevieja(String clavevieja) {
        this.clavevieja = clavevieja;
    }

    public void cambioClave() {
        ConexionServidor myConexion = new ConexionServidor();
        try {
            Connection con = myConexion.getConnection();
            PreparedStatement ps = con.prepareStatement("select idusuario from usuario where password = ? and nombreusuario = ?");
            ps.setString(1, clavevieja);
            ps.setString(2, nombreusuario);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                idusuario = rs.getInt("idusuario");
            }
            //actualizar();
            confirmarclave();
            rs.close();
            ps.close();
            con.close();
        } catch (Exception ex) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "CAMBIO DE CLAVE USUARIO", "Error al cambiar clave: datos no validos"));
            System.out.println(ex.getMessage());
        }
    }

    public void confirmarclave() {
        if (clavenueva.equals(claveigual)) {
            actualizar();
        } else {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "CAMBIO DE CLAVE USUARIO", "Error al cambiar clave: confirmacion de clave erronea"));
        }
    }

    public void actualizar() {
        ConexionServidor myConexion = new ConexionServidor();
        try {
            Connection con = myConexion.getConnection();
            PreparedStatement ps = con.prepareStatement("update usuario set password = ? where idusuario = ?");
            ps.setString(1, clavenueva);
            ps.setInt(2, idusuario);
            ps.execute();
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "CAMBIO DE CLAVE USUARIO", "Su clave a sido cambiada exitosamente"));
            ps.close();
            con.close();
        } catch (Exception ex) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "CAMBIO DE CLAVE USUARIO", "Error al cambiar clave: datos no validos"));
            System.out.println(ex.getMessage());
        }
    }
}
